  /**
   * 1.引入对应的模块
   * 2.执行模块函数，赋值给变量 xxxStore
   * 
   * state和getters通过storeToRefs(xxxStore)函数解构出来便可直接使用,也可以通过xxxStore[属性吗]获取
   * action通过xxxStore.actionName(data)直接调用
   */


import { defineStore } from 'pinia'

export const useUserStore = defineStore({
  id: 'user', //id必填，且唯一


  state: () => {
    return {
      userName: '张三',
    }
  },

  getters: {
    fullName: ( state )=>{
      return state.userName + '!!'
    }
  },

  /**
   * 可异步可同步
   * 可直接使用this，代表当前store
   */
  actions: {
    async updateUserName(data: string) {
      this.userName = data

      //直接this调用同个模块的其他action
      // setTimeout(() => {
      //   this.TESTACTION()
      // }, 2000);
    },


    TESTACTION(){
      console.log('Hi, .....')
    },
  },


  //开启数据缓存
  /** 
  persist: {
    enabled: true,
    strategies: [
      {
        // key: 'my_user',    //指定存储的key名
        storage: localStorage, //指定存储位置
        // paths: [],  //指定存储的字段
      }
    ],
  },
*/

})